/**
 * 比较两个版本号的大小。
 * @param {String} version1 - 第一个要比较的版本号字符串。
 * @param {String} version2 - 第二个要比较的版本号字符串。
 * @returns {number} - 如果 version1 大于 version2，返回 1；
 *                     如果 version1 小于 version2，返回 -1；
 *                     如果 version1 等于 version2，返回 0。 
 */
export function compareVersions(version1, version2) {
	// 去除版本号字符串中的 'V' 或 'v' 前缀
	version1 = version1.replace(/^[vV]/, '');
	version2 = version2.replace(/^[vV]/, '');

	// 将版本号字符串按 '.' 分割成数组
	const v1Parts = version1.split('.').map(Number);
	const v2Parts = version2.split('.').map(Number);

	// 获取两个版本号数组的最大长度
	const maxLength = Math.max(v1Parts.length, v2Parts.length);

	// 遍历每个部分进行比较
	for (let i = 0; i < maxLength; i++) {
		// 如果 v1Parts 数组在当前位置没有值，则默认为 0
		const num1 = i < v1Parts.length ? v1Parts[i] : 0;
		// 如果 v2Parts 数组在当前位置没有值，则默认为 0
		const num2 = i < v2Parts.length ? v2Parts[i] : 0;

		if (num1 > num2) {
			return 1; // version1 大于 version2
		} else if (num1 < num2) {
			return -1; // version1 小于 version2
		}
		// 如果当前部分相等，则继续比较下一部分
	}

	return 0; // 两个版本号相等
}

export function i18Replace(str, obj) {
	return str.replace(/{([^}]+)}/g, (match, key) => {
		return obj[key.trim()] !== undefined ? obj[key.trim()] : match;
	});
}